﻿using System;
using System.Collections.Generic;
using System.Text;

using RAD.LightOne;

namespace RAD.LightOne
{
    /*
    #region Documentation
    /// <summary>
    /// Classe que funciona como ponte de ligação entre tabelas de classes que herdem de outra
    /// e que, porém, armazenem seus dados específicos em tabelas diferentes da tabela relacionada à
    /// classe base. A ligação é feita através de seus campos básicos Id e ClassName.
    /// Esta classe fornece um artifício para o processador de instância capturar os dados que 
    /// comporão a chave estrangeira no banco de dados que une a tabela específica com a tabela da base.
    /// </summary>
    #endregion Documentation
    internal sealed class InheritanceBridge : IMyObject
    {
        #region Fields
        [DBField("id")]
        private string id;

        [DBField("class_name")]
        private string className;

        #endregion Fields

        #region Constructors
        #region Documentation
        /// <summary>
        /// Construtor que recebe o ponteiro de instância no banco, id e o tipo da mesma.
        /// </summary>
        /// <param name="id">Ponteiro, chave estrangeira em banco</param>
        /// <param name="className">Tipo útil em find's de forma geral.</param>
        #endregion
        public InheritanceBridge(Guid id, string className)
        {
            if (className == null || className == string.Empty
                 || id == null || id == Guid.Empty) throw new ArgumentNullException("InheritanceTableBridge, id or className argument cannot be null.");

            this.className = className;
            this.id = id.ToString();
        }

        #endregion Constructors

        #region ILightConsumible Members

        public Guid Id
        {
            get { return new Guid(this.id); }
        }

        public string ClassName
        {
            get { return this.className; }
        }

        public DateTime LastPersistence
        {
            get
            {
                return DateTime.Now;
            }
        }

        #endregion
    }*/
}
